O que é printf em Java?
O printf é um método usado para imprimir texto formatado no console, ou sejam além de usar o print ou println o programador ainda tem a opção de utilizar o printf que traz algumas características. Ele vem da linguagem C, e significa "print formatted" (imprimir formatado).
Sintaxe básica
System.out.printf("texto com formatação desejado", variavel1, variavel2, variavel3);
O printf utiliza caracteres formatadores ( %s, %d .... ) que definem como os valores das variáveis devem ser exibidas bem como o seu formato.
Considere o código abaixo:
public class Main {
public static void main(String[] args) {
String nome = "Maria";
int idade = 25;
float peso = 85.6f;
System.out.printf("Nome: %s Idade: %d Peso: %f \n", nome, idade, peso);
}
}
O resultado impresso será:
Nome: Maria Idade: 25
A primeira função do caractere de formatação é marcar a posição dentro do texto a ser formatado, em qual posição uma variável deverá ter o conteúdo inserido dentro da frase.
No caso do exemplo acima, o %s (formatador para string), determina que a variável nome, deverá ter o seu conteúdo impresso na posição onde se encontra o %s. Já o %d (formatador para inteiro) determina que a variavel idade deverá ter o seu conteúdo impresso na posição onde se econtra o %d. A mesma coisa ocorre com o %f (formatador para float).
Note que as variáveis são separadas com vírgulas, e terão o seu conteúdo inserido nas posições respectivas dos formatadores, ou seja, o primeiro formatador se relaciona com a primeira variável, o segundo formatador se relaciona com a segunda varíavel e assim sucessivamente.
Marcadores de formatação mais comuns:
Marcador Tipo de dado Exemplo %s String (texto) "Maria" %d int (número inteiro) 25 %f float/double (número decimal) 3.14 %.2f decimal com 2 casas 3.14 (formata para 2 casas decimais)
Alinhamento de texto:
public class Main {
public static void main(String[] args) {
System.out.printf("+----------------------+----------+\n");
System.out.printf("| %-20s | %10s\n", "Produto", "Valor |");
System.out.printf("+----------------------+----------+\n");
System.out.printf("| %-20s | %8.2f |\n", "Arroz", 6.78);
System.out.printf("| %-20s | %8.2f |\n", "Feijao", 9.18);
System.out.printf("| %-20s | %8.2f |\n", "Açucar", 4.28);
System.out.printf("| %-20s | %8.2f |\n", "Café", 3.70);
System.out.printf("+----------------------+----------+\n");
}
}
%-20s → alinha à esquerda e ocupa 20 espaços.
%5.2f → alinha à direita com 5 espaços, e dois caracteres depois da vírgula.
Saída:
+----------------------+----------+ | Produto | Valor | +----------------------+----------+ | Arroz | 6.78 | | Feijao | 9.18 | | Açucar | 4.28 | | Café | 3.70 | +----------------------+----------+